﻿#include "blog_manager.h"
#include <service/event/ctkEventAdmin.h>
#include <QtDebug>

BlogManager::BlogManager(ctkPluginContext* context)
    : m_pContext(context)
{

}

// 发布事件
void BlogManager::publishBlog(const Blog& blog)
{
    // 获取 ctkEventAdmin 用于管理事件服务的引用，用于发送信息。
    ctkServiceReference ref = m_pContext->getServiceReference<ctkEventAdmin>();
    if (ref) {
        ctkEventAdmin* eventAdmin = m_pContext->getService<ctkEventAdmin>(ref);

        // 将自定义传递的信息blog，转成props，作为事件内容进行传递。
        ctkDictionary props;
        props["title"] = blog.title;
        props["content"] = blog.content;
        props["author"] = blog.author;
        ctkEvent event("org/commontk/bloggenerator/published", props);  // topic,props

        qDebug() << "Publisher sends a message, properties:" << props;

        eventAdmin->sendEvent(event);  // 类通信形式同步发送事件. postEvent：类通信形式异步发送事件
    }
}
